﻿using Furion.FriendlyException;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Gear.Core.ErrorControl
{
    [ErrorCodeType]
    public enum ErrorCodeModel
    {
        #region ======================== 基本错误类E0000 ========================
        
        #region == default（success） == 
        E0000,
        #endregion

        #endregion

        #region ======================== 请求错误类E1000 ========================

        #region == 路由错误E1100 ==
        // 接口错误
        [ErrorCodeItemMetadata("【{0}】->非法接口")]
        E1100_1,
        // 请求类型（Method）错误
        [ErrorCodeItemMetadata("【{0}】->错误的请求类型（Method）")]
        E1100_2,
        // 执行类型（Execute）错误
        [ErrorCodeItemMetadata("【{0}】->错误的请求类型（Execute）")]
        E1100_3,
        #endregion

        #region == 参数错误E1200 ==
        // 非法参数
        [ErrorCodeItemMetadata("【{0}】->输入参数存在非法字符")]
        E1200_1,
        // 重复参数
        [ErrorCodeItemMetadata("【{0}】->重复参数")]
        E1200_2,
        // 缺失参数
        [ErrorCodeItemMetadata("【{0}】->缺失参数")]
        E1200_3,
        // 违规参数
        [ErrorCodeItemMetadata("【{0}】->违规参数")]
        E1200_4,
        // 违规参数-查询类型错误
        [ErrorCodeItemMetadata("【{0}】->违规参数-查询类型错误")]
        E1200_4_1,
        // 违规参数-查询字段不存在于数据源
        [ErrorCodeItemMetadata("【{0}】->违规参数-查询字段不存在于数据源")]
        E1200_4_2,
        #endregion

        #endregion

        #region ======================== 数据执行错误类E2000 ========================

        #region == default ==
        // 非法数据连接池
        [ErrorCodeItemMetadata("【{0}】->非法的数据连接池，请确认是否注册！")]
        E2000_1,
        #endregion

        #region == 执行语句错误E2100 ==
        // 非法执行语句
        [ErrorCodeItemMetadata("【{0}】->非法执行语句")]
        E2100_1,
        // 非法转义语句
        [ErrorCodeItemMetadata("【{0}】->非法转义语句,请检查是否缺失（sql:）关键字")]
        E2100_1_1,
        // 数据执行错误
        [ErrorCodeItemMetadata("【{0}】->数据执行错误，请检查表是否存在、字段是否缺失或必填字段是否为空！")]
        E2100_1_2,
        // 数据执行错误-缺失参数关键字
        [ErrorCodeItemMetadata("非法参数标识,请检查是否缺失（json 或 key）执行参数")]
        E2100_1_2_1,
        // 数据执行错误-缺失执行关键字
        [ErrorCodeItemMetadata("【{0}】->非法执行标识,请检查是否缺失（insert: 或 update: ）执行关键字")]
        E2100_1_2_2,
        // 空执行语句
        [ErrorCodeItemMetadata("【{0}】->空执行语句")]
        E2100_2,
        // 字段获取执行失败
        [ErrorCodeItemMetadata("字段获取执行失败")]
        E2100_3,
        // 获取字段请使用可执行语句
        [ErrorCodeItemMetadata("获取字段请使用可执行语句")]
        E2100_3_1,
        #endregion

        #region == 数据转换错误E2200 ==
        // 字段类型转换错误
        [ErrorCodeItemMetadata("【字段（{0}） To （{2}）】->字段类型转换错误")]
        E2200_1,
        #endregion

        #region == 数据组装错误E2300 ==
        // 重复字段
        [ErrorCodeItemMetadata("【{0}】->重复字段")]
        E2300_1,
        #endregion

        #region == 存储过程执行错误E2400 ==
        [ErrorCodeItemMetadata("请检查存储过程是否正确！")]
        E2400,
        [ErrorCodeItemMetadata("请检查存储过程是否存在！")]
        E2400_1,
        [ErrorCodeItemMetadata("【{0}】->非法参数，调用存储过程（{1}）失败！")]
        E2401_1,
        [ErrorCodeItemMetadata("【{0}】->缺失参数，调用存储过程（{1}）失败！")]
        E2401_2,
        #endregion
        #endregion

    }
}
